import { onKeyDown, onKeyUp } from '@vueuse/core'
import { ref } from 'vue'

const kByte = 1024.0

const mByte = kByte * 1024.0

const gByte = mByte * 1024.0

const tByte = gByte * 1024.0

export function byte4Human(byte: number): { value: number; unit: string } {
  if (byte < kByte) {
    return { value: byte, unit: ' B' }
  } else if (byte < mByte) {
    return { value: byte / kByte, unit: 'KB' }
  } else if (byte < gByte) {
    return { value: byte / mByte, unit: 'MB' }
  } else if (byte < tByte) {
    return { value: byte / gByte, unit: 'GB' }
  } else {
    return { value: byte / tByte, unit: 'TB' }
  }
}

export function px2Number(px: string): number {
  return Number(px.replace('px', ''))
}

export function onKeyboardPressAndHold(key: string) {
  const pressAndHold = ref(false)
  onKeyDown(key, () => (pressAndHold.value = true), { dedupe: true })

  onKeyUp(key, () => (pressAndHold.value = false), { dedupe: true })
  return { pressAndHold }
}
